Hadoop 学习系列(一)之Hadoop伪分布式环境搭建

原文地址:http://pengtuo.tech/2018/09/04/hadoop-pseudo-distributed/

以这篇文章开启大数据开发系列教程更新,本人也是努力学习中

1. 环境要求

首先 Java 版本不低于 Hadoop 相应版本要求,一般的,Hadoop 大版本号在 2.6 以前的支持 Java 6,Hadoop 大版本号 在 2.7 ~ 3.0 之间的支持 Java 7,Hadoop 版本在 3.0 之后的支持 Java 8

详细可见官网 Hadoop Java Versions

本文所用的 Hadoop 版本为 hadoop-2.6.0-cdh5.7.0,这个版本很稳定,属于大多企业使用的 Hadoop 版本,Java 版本使用的是 java version "1.7.0_80"

在 Linux 中下载,执行以下命令:

  • 下载 Java 8
wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz
  • 下载 Java 7
wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn/java/jdk/7u80-b15/jdk-7u80-linux-x64.tar.gz?AuthParam=1523684058_82b7921ee0def49bd2a0930187900e60
  • 下载 hadoop-2.6.0-cdh5.7.0
wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz

本人的建议文件管理方式,将这些下载都存储到 ~/downloads/ 文件夹里,然后解压到 ~/app/ 文件里

2. 环境配置

2.1 配置 Java

执行解压命令

tar -zxvf jdk-8u161-linux-x64.tar.gz -C ~/app/

创建.profile 文件,如果有就不用创建了,然后在.profile 文件里添加

export JAVA_HOME=/root/app/jdk1.7.0_80
export PATH=$JAVA_HOME/bin:$PATH

保存退出后,执行 source .profile 让配置生效

2.2 配置 ssh 免密登录

HDFS 是由一个 NameNode,一个 SecodaryNameNode,以及 n 个 DataNode 组成,当有多台物理机时,NameNodeDataNode 是分布在不同的物理机上,部署则需要 NameNode 能够直接与 DataNode 进行通信,通信方式之一就是使用 SSH (Secure Shell),所以需要在之间设置免密登录

因为本次是 Hadoop 伪分布式搭建,本机同时充当 NameNodeDataNode 角色,所以只需要配置一个本机的 SSH 免密登录

执行:

ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

即可

2.3 修改 hadoop 配置文件

解压 hadoop 压缩包:

tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C ~/app/

.profile 文件里添加:

export HADOOP_HOME=/root/app/hadoop-2.6.0-cdh5.7.0
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$HADOOP_HOME/bin:$PATH

Hadoop 的配置文件都在 hadoop_home/etc/hadoop/ 里,如果你的文件管理方式和我一样的话,则是在 ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop/

hadoop-env.sh 中添加:

export JAVA_HOME= 你的 java home 路径

core-site.xml 中添加:

<configuration>

<property>
    <name>fs.defaultFS</name>
    <value>hdfs:// {你的 IP 地址或 hostname} :8020</value>
</property>

<property>
    <name>hadoop.tmp.dir</name>
    <value>~/app/tmp</value>
</property>

</configuration>

hdfs-site.xml 中添加:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

2.4 启动 hdfs

首先格式化文件系统

注意:仅第一次执行即可,不要重复执行

cd ~/app/hadoop-2.6.0-cdh5.7.0
bin/hdfs namenode -format

然后启动 namenodedatanode

sbin/start-dfs.sh

检验是否启动成功,执行 jps,如果显示:

3644 SecondaryNameNode
3341 NameNode
3450 DataNode
4141 Jps

则表示环境配置成功,如果少一个就表示启动没有成功,则需要检查相应的日志进行错误排查

3. 错误排查

NameNodeSecondaryNameNode以及DataNode的启动日志都在~/app/hadoop-2.6.0-cdh5.7.0/logs/中,查看对应的.log文件可获得启动信息以及错误日志

本人配置过程的遇到的错误有:

(1) 地址绑定错误:

Problem binding to [aliyun:8030] 
java.net.BindException: Cannot assign requested address; 
For more details see:  http://wiki.apache.org/hadoop/BindException

Caused by: java.net.BindException: Cannot assign requested address

解决方法:本人是在阿里云服务器上配置,在 /etc/hosts 文件中,主机名配置IP不能用公网IP,需要用内网IP

(2) 在启动 hadoop 时,有 log4jwarning 警告信息

解决方法:vim etc/hadoop/log4j.properties,然后添加 log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR

注意:此方法只是修改了 log4j 的活跃等级,并不是解决了 warning 的根源,属于治标不治本

(3) 执行 jps 后,只启动了 NameNodeSecondaryNameNode,没有启动 DataNode
查看日志得到错误日志:

2018-09-04 11:47:38,166 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to aliyun/172.16.252.38:8020. Exiting.
java.io.IOException: All specified directories are failed to load.
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:478)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1394)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1355)
    at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:228)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:829)
    at java.lang.Thread.run(Thread.java:745)

这个是文件系统初试化时出了问题

解决方法:停止已启动的节点,停止命令为 sbin/stop-dfs.sh,删除 ~/app/tmp/dfs 文件夹,然后重新到 ~/app/hadoop-2.6.0-cdh-5.7.0/ 执行 bin/hdfs namenode -format,然后启动 sbin/start-dfs.sh,此时就能够成功启动

强烈注意bin/hdfs namenode -format格式化文件系统命令,如果你是初次搭建,可以用此方法暴力解决,但是如果已经使用了 Hadoop 一段时间,HDFS 存在重要数据,则需要另找它法。

OK,后面将会讲解 Hadoop 的重要组成部分以及相关知识

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容

  • 终极算法 关注微信号每天收听我们的消息终极算法为您推送精品阅读 前言 Hadoop 在大数据技术体系中的地位至关...
    Yespon阅读 128,623评论 12 168
  • 一、系统参数配置优化 1、系统内核参数优化配置 修改文件/etc/sysctl.conf,添加如下配置,然后执行s...
    张伟科阅读 3,668评论 0 14
  • 1. Hadoop常用组件: 1. hadoop commons :hadoop基础模块。 2. HDFS:存储数...
    奉先阅读 827评论 0 2
  • 今天早晨我和妈妈写完字,我们一起看数学书,我们把别的都写完了,就只差长度单位了。我和妈妈开始练习长度单位了,第...
    M张皓轩M阅读 143评论 0 0
  • “时间总是显得那么短暂而不够。” 人生其实不长,若以70为人的平均寿命,那么不过只能活25567天,61360...
    泠鹿阅读 123评论 0 0